Appendix overview

In this appendix, I report additional exploratory factor analysis (EFA) results that were excluded from the main text of Chapter III, including: (a) unrotated versions of all of the EFA solutions reported in Chapter III; (b) oblimin-transformed (rather than varimax-rotated) versions of all of the EFA solutions reported in Chapter III; and (c) additional varimax-rotated EFA solutions not reported in full in Chapter III because I deemd to be redundant with the reported solutions.

Unrotated solutions

Throughout this dissertation, beginning in Chapter III, I have reported EFA solutions after applying varimax rotation. This rotation, which maximizes the sum of the variances of the squared factor loadings, is intended to make factors more interpretable by producing “simple structure” (Thurstone, 1949). Here, for completeness, I present unrotated EFA solutions for all of the EFAs reported in Chapter III.

Study 1

Study 2

Study 3

Study 4

Oblimin-transformed solutions

Throughout this dissertation, I have opted to focus on varimax-rotated EFA solutions, in which factors are constrained to be orthogonal (i.e., inter-factor correlations are 0). In my (admittedly anecdotal) experience, this rotation has tended to produce solutions that are more replicable when studies are repeated exactly, more similar across variants of the empirical approach, and easier to make factor retention decisions about. Orthogonal solutions also lend themselves more naturally to “scoring” individual participants on each of the underlying constructs because factors are, by definition, maximally distinct from one another. Since comparing EFA solutions across studies and age groups (Chapter III) and using these solutions to “score” participants on their assessments of the mental lives of different target characters (Chapter V) are two of the main goals of this dissertation, varimax rotations seemed to me to be appropriate for my current purposes.

However, “oblique” transformations, such as the “oblimin” transformation, also confer many advantages in using EFA to identify constructs of theoretical interest (for discussion, see Revelle, 2018, Chapter 6). In contrast to orthogonal rotations, oblique transformations allow factors to correlate with each other. In removing the orthgonality constraint, oblique transformations thus reveal relationships between variables (in my case, mental capacities) and factors (conceptual units) that might be considered more “natural”; they might also reveal new aspects of the relationships among factors themselves (pertinent to my goals in Chapter V).

In the interest of adding nuance to my primary discussions of the conceptual units identified by EFA (Chatper III) and the relationships among these units (Chapter V), here I present oblimin-transformed EFA solutions for all studies.

Study 1

EFA solutions

Different factor retention protocols suggested retaining between 3-5 factors for Studies 1a-1d. Here, I report 3-, 4-, and 5-factor solutions for all of these studies. When these factors seem similar to the BODY, HEART, and MIND factors presented in Chapter III, I have labeled them accordingly.

Inter-factor correlations

Here I present inter-factor correlations for all of the above EFA solutions for Studies 1a-1d.

Study 2

EFA solutions

Different factor retention protocols suggested retaining either 3 or 4 factors for adults in Study 2; all protocols suggested retaining 3 factors for children (ages 7-9y). Here, I report 3-, and 4-factor solutions for adults and the 3-factor solution for children. When these factors seem similar to the BODY, HEART, and MIND factors presented in Chapter III, I have labeled them accordingly.

Inter-factor correlations

Here I present inter-factor correlations for all of the above EFA solutions for Study 2.

Study 3

EFA solutions

Various factor retention protocols suggested retaining either 3 or 4 factors for adults in Study 3; 3 factors for older children (ages 7-9y); and either 1, 3, or 4 factors for younger children (ages 4-6y). Here, I report 3-, and 4-factor solutions for adults, the 3-factor solution for older children, and the 1-, 3-, and 4-factor solutions for younger children. When these factors seem similar to the BODY, HEART, and MIND factors presented in Chapter III, I have labeled them accordingly.

Inter-factor correlations

Here I present inter-factor correlations for all of the above EFA solutions for Study 3 (with the exception of the 1-factor null solution for younger children).

Study 4

EFA solutions

All factor retention protocols suggested retaining 3 factors for adults in Study 4; different protocols suggested retaining either either 1, 3, or 4 factors for children (ages 4-5y). Here, I report the 3-factor solution for adults, and the 1-, 3-, and 4-factor solutions for children. When these factors seem similar to the BODY, HEART, and MIND factors presented in Chapter III, I have labeled them accordingly.

Inter-factor correlations

Here I present inter-factor correlations for all of the above EFA solutions for Study 4 (with the exception of the 1-factor null solution for children).

Varimax-rotated solutions previously deemed redundant

In Chapter III, I focused my interpretation on a subset of the EFA solutions suggested by the three factor retention protocols, excluding those solutions in which additional factors were redundant with the 3-factor (BODY-HEART-MIND) solution. These additional factors tend to explain very little of the shared variance; tend not to be the dominant factor (the factor with the strongest absolute factor loading) for many, if any, mental capacities; and tend to have very weak factor loadings. I include them here for completeness.

Study 1

The factor retention criteria employed in Weisman et al. (2017) suggested retaining 3 factors for all of the studies included in Study 1; see Chapter III. In contrast, parallel analysis suggested retaining 4 factors (instead of 3) for Studies 1b and 1d; minimizing BIC suggested retaining 4 factors (instead of 3) for Study 1c, and 5 factors (instead of 3) for Studies 1a, 1b, and 1d. See Figure A.13.

Study 2

All of the EFA solutions suggested by the three factor retention protocols are reported in full in Chapter III.

Study 3

The factor retention criteria employed in Weisman et al. (2017) suggested retaining 3 factors for all of the age groups included in Study 3; see Chapter III. In contrast, parallel analysis suggested retaining 2 factors (instead of 3) for younger children; and minimizing BIC suggested retaining 4 factors (instead of 3) for adults, and 1 factor (i.e., a “null” solution) for younger children (ages 4-6y). See Figure A.14.

Study 4

All of the EFA solutions suggested by the three factor retention protocols are reported in full in Chapter III, with the exception of the 1-factor (“null”) solution suggested by minimizing BIC for younger children (4-5y). See Figure A.15.

LS0tCnRpdGxlOiAiQXBwZW5kaXggQTogQWRkaXRpb25hbCBFRkEgc29sdXRpb25zIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6IDQKICAgIHRvY19mbG9hdDogeWVzCmFsd2F5c19hbGxvd19odG1sOiB5ZXMKLS0tCgpgYGB7ciBnbG9iYWxfb3B0aW9ucywgaW5jbHVkZSA9IEZ9CmtuaXRyOjpvcHRzX2NodW5rJHNldChmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMC42NywKICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgPSBGLCBlY2hvID0gRikKYGBgCgpgYGB7cn0KIyAjIGZvciBrbml0dGluZyB0byAuZG9jeAojIG91dHB1dDoKIyAgIHdvcmRfZG9jdW1lbnQ6CiMgICAgIHJlZmVyZW5jZV9kb2N4OiAiLi93b3JkLXN0eWxlcy1yZWZlcmVuY2UuZG9jeCIKIyBhbHdheXNfYWxsb3dfaHRtbDogeWVzCiAgIAojICMgZm9yIGtuaXR0aW5nIHRvIC5uYi5odG1sIAojIG91dHB1dDoKIyAgIGh0bWxfbm90ZWJvb2s6CiMgICAgIHRvYzogeWVzCiMgICAgIHRvY19kZXB0aDogNAojICAgICB0b2NfZmxvYXQ6IHllcwpgYGAKCmBgYHtyfQojIHBhY2thZ2VzCnNvdXJjZSgiLi9zY3JpcHRzL2xpYnJhcmllcy5SIikKCiMgc3VwcG9ydGluZyBmdW5jdGlvbnMKc291cmNlKCIuL3NjcmlwdHMvZWZhX3BhcmFtLlIiKQpzb3VyY2UoIi4vc2NyaXB0cy9tYXhfZmFjdG9yc19lZmEuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL3JldGVuX2Z1bi5SIikKc291cmNlKCIuL3NjcmlwdHMvcGxvdF9mdW4uUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2VmYV9mdW4uUiIpCnNvdXJjZSgiLi9zY3JpcHRzL21zX2Z1bi5SIikKCiMgZGF0YSBzY3JpcHRzCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczEuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczJfYWQuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczJfNzkuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczNfYWQuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczNfNzkuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczNfNDYuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczRfYWQuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczRfNDYuUiIpCmBgYAoKYGBge3J9CiMgbG9hZCBpbiBFRkFzIGZyb20gQ2hhcHRlciBJSQojIHN0dWR5IDEKZWZhX3Bhcl9kMWFfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfcGFyX2QxYV9hZCIpCmVmYV9iaWNfZDFhX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX2JpY19kMWFfYWQiKQplZmFfd2RtX2QxYV9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV93ZG1fZDFhX2FkIikKCmVmYV9wYXJfZDFiX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3Bhcl9kMWJfYWQiKQplZmFfYmljX2QxYl9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9iaWNfZDFiX2FkIikKZWZhX3dkbV9kMWJfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfd2RtX2QxYl9hZCIpCgplZmFfcGFyX2QxY19hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9wYXJfZDFjX2FkIikKZWZhX2JpY19kMWNfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfYmljX2QxY19hZCIpCmVmYV93ZG1fZDFjX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3dkbV9kMWNfYWQiKQoKZWZhX3Bhcl9kMWRfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfcGFyX2QxZF9hZCIpCmVmYV9iaWNfZDFkX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX2JpY19kMWRfYWQiKQplZmFfd2RtX2QxZF9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV93ZG1fZDFkX2FkIikKCiMgc3R1ZHkgMgplZmFfcGFyX2QyX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3Bhcl9kMl9hZCIpCmVmYV9iaWNfZDJfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfYmljX2QyX2FkIikKZWZhX3dkbV9kMl9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV93ZG1fZDJfYWQiKQoKZWZhX3Bhcl9kMl83OSA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9wYXJfZDJfNzkiKQplZmFfYmljX2QyXzc5IDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX2JpY19kMl83OSIpCmVmYV93ZG1fZDJfNzkgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfd2RtX2QyXzc5IikKCiMgc3R1ZHkgMwplZmFfcGFyX2QzX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3Bhcl9kM19hZCIpCmVmYV9iaWNfZDNfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfYmljX2QzX2FkIikKZWZhX3dkbV9kM19hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV93ZG1fZDNfYWQiKQoKZWZhX3Bhcl9kM183OSA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9wYXJfZDNfNzkiKQplZmFfYmljX2QzXzc5IDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX2JpY19kM183OSIpCmVmYV93ZG1fZDNfNzkgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfd2RtX2QzXzc5IikKCmVmYV9wYXJfZDNfNDYgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfcGFyX2QzXzQ2IikKZWZhX2JpY19kM180NiA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9iaWNfZDNfNDYiKQplZmFfd2RtX2QzXzQ2IDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3dkbV9kM180NiIpCgojIHN0dWR5IDQKZWZhX3Bhcl9kNF9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9wYXJfZDRfYWQiKQplZmFfYmljX2Q0X2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX2JpY19kNF9hZCIpCmVmYV93ZG1fZDRfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfd2RtX2Q0X2FkIikKCmVmYV9wYXJfZDRfNDYgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfcGFyX2Q0XzQ2IikKZWZhX2JpY19kNF80NiA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9iaWNfZDRfNDYiKQplZmFfd2RtX2Q0XzQ2IDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3dkbV9kNF80NiIpCmBgYAoKIyBBcHBlbmRpeCBvdmVydmlldwoKSW4gdGhpcyBhcHBlbmRpeCwgSSByZXBvcnQgYWRkaXRpb25hbCBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMgKEVGQSkgcmVzdWx0cyB0aGF0IHdlcmUgZXhjbHVkZWQgZnJvbSB0aGUgbWFpbiB0ZXh0IG9mIENoYXB0ZXIgSUlJLCBpbmNsdWRpbmc6IChhKSB1bnJvdGF0ZWQgdmVyc2lvbnMgb2YgYWxsIG9mIHRoZSBFRkEgc29sdXRpb25zIHJlcG9ydGVkIGluIENoYXB0ZXIgSUlJOyAoYikgb2JsaW1pbi10cmFuc2Zvcm1lZCAocmF0aGVyIHRoYW4gdmFyaW1heC1yb3RhdGVkKSB2ZXJzaW9ucyBvZiBhbGwgb2YgdGhlIEVGQSBzb2x1dGlvbnMgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUk7IGFuZCAoYykgYWRkaXRpb25hbCB2YXJpbWF4LXJvdGF0ZWQgRUZBIHNvbHV0aW9ucyBub3QgcmVwb3J0ZWQgaW4gZnVsbCBpbiBDaGFwdGVyIElJSSBiZWNhdXNlIEkgZGVlbWQgdG8gYmUgcmVkdW5kYW50IHdpdGggdGhlIHJlcG9ydGVkIHNvbHV0aW9ucy4KCgojIFVucm90YXRlZCBzb2x1dGlvbnMKClRocm91Z2hvdXQgdGhpcyBkaXNzZXJ0YXRpb24sIGJlZ2lubmluZyBpbiBDaGFwdGVyIElJSSwgSSBoYXZlIHJlcG9ydGVkIEVGQSBzb2x1dGlvbnMgYWZ0ZXIgYXBwbHlpbmcgdmFyaW1heCByb3RhdGlvbi4gVGhpcyByb3RhdGlvbiwgd2hpY2ggbWF4aW1pemVzIHRoZSBzdW0gb2YgdGhlIHZhcmlhbmNlcyBvZiB0aGUgc3F1YXJlZCBmYWN0b3IgbG9hZGluZ3MsIGlzIGludGVuZGVkIHRvIG1ha2UgZmFjdG9ycyBtb3JlIGludGVycHJldGFibGUgYnkgcHJvZHVjaW5nICJzaW1wbGUgc3RydWN0dXJlIiAoVGh1cnN0b25lLCAxOTQ5KS4gSGVyZSwgZm9yIGNvbXBsZXRlbmVzcywgSSBwcmVzZW50IHVucm90YXRlZCBFRkEgc29sdXRpb25zIGZvciBhbGwgb2YgdGhlIEVGQXMgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUkuCgpgYGB7cn0KIyByZXNldCBFRkEgcGFyYW1ldGVycyB0byBkZWZhdWx0LCB0aGVuIHNldCBjaG9zZW4gcm90YXRpb24gdG8gbm9uZQpzb3VyY2UoIi4vc2NyaXB0cy9lZmFfcGFyYW0uUiIpCmNob3Nlbl9yb3QgPC0gIm5vbmUiCmBgYAoKIyMgU3R1ZHkgMQoKYGBge3J9CmVmYV8zX2QxYV9hZF91bnJvdCA8LSBmYV9mdW4oZDFhX2FkX3dpZGVfaSwgMykKZWZhXzNfZDFiX2FkX3Vucm90IDwtIGZhX2Z1bihkMWJfYWRfd2lkZV9pLCAzKQplZmFfM19kMWNfYWRfdW5yb3QgPC0gZmFfZnVuKGQxY19hZF93aWRlX2ksIDMpCmVmYV8zX2QxZF9hZF91bnJvdCA8LSBmYV9mdW4oZDFkX2FkX3dpZGVfaSwgMykKYGBgCgpgYGB7cn0KIyBzdHVkeSAxYQpwbG90X2VmYV8zX2QxYV9hZF91bnJvdCA8LSBoZWF0bWFwX2Z1bihlZmFfM19kMWFfYWRfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFhIiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgc3R1ZHkgMWIKcGxvdF9lZmFfM19kMWJfYWRfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDFiX2FkX3Vucm90KSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYiIsIHN1YnRpdGxlID0gIlVucm90YXRlZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHN0dWR5IDFjCnBsb3RfZWZhXzNfZDFjX2FkX3Vucm90IDwtIGhlYXRtYXBfZnVuKGVmYV8zX2QxY19hZF91bnJvdCkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWMiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyBzdHVkeSAxZApwbG90X2VmYV8zX2QxZF9hZF91bnJvdCA8LSBoZWF0bWFwX2Z1bihlZmFfM19kMWRfYWRfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFkIiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDMtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKYGBge3J9CmZpZ3VyZUEuMSA8LSBwbG90X2dyaWQocGxvdF9lZmFfM19kMWFfYWRfdW5yb3QsIHBsb3RfZWZhXzNfZDFiX2FkX3Vucm90LCAKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV8zX2QxY19hZF91bnJvdCwgcGxvdF9lZmFfM19kMWRfYWRfdW5yb3QsCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gNCwgcmVsX3dpZHRocyA9IGMoMSwgMSwgMSwgMS4yKSkKCmZpZ3VyZUEuMV9jYXAgPC0gYWRkX3N1YihmaWd1cmVBLjEsIHN0cl93cmFwKCJGaWd1cmUgQS4xOiBGYWN0b3IgbG9hZGluZ3MgZnJvbSBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgb2YgU3R1ZHkgMSAoYXMgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUkpLCBiZWZvcmUgcm90YXRpb24uIEFsbCByZXN1bHRzIGFyZSBmcm9tIFVTIGFkdWx0IHNhbXBsZXM7IHNlZSBDaGFwdGVyIElJIGZvciBtZXRob2RzLiAoQSkgU3R1ZHkgMWEuIChCKSBTdHVkeSAxYi4gKEMpIFN0dWR5IDFjLiAoRCkgU3R1ZHkgMWQuIEEgZmFjdG9yIGxvYWRpbmcgb2YgKzEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IHBvc2l0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG1lbnRhbCBjYXBhY2l0eSBhbmQgdW5kZXJseWluZyBjb25zdHJ1Y3Q7IGEgbG9hZGluZyBvZiAtMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgbmVnYXRpdmUgcmVsYXRpb25zaGlwLiIsIDIxMCksIHggPSAwLCBoanVzdCA9IDApCmBgYAoKYGBge3IgZmlndXJlQS4xLCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gOSwgZmlnLmFzcCA9IDAuNn0KZ2dkcmF3KGZpZ3VyZUEuMV9jYXApCmBgYAoKIyMgU3R1ZHkgMgoKYGBge3J9CmVmYV8zX2QyX2FkX3Vucm90IDwtIGZhX2Z1bihkMl9hZF93aWRlX2ksIDMpCmVmYV80X2QyX2FkX3Vucm90IDwtIGZhX2Z1bihkMl9hZF93aWRlX2ksIDQpCmVmYV8zX2QyXzc5X3Vucm90IDwtIGZhX2Z1bihkMl83OV93aWRlX2ksIDMpCmBgYAoKYGBge3J9CiMgYWR1bHRzCnBsb3RfZWZhXzNfZDJfYWRfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDJfYWRfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIkFkdWx0cyIsIHN1YnRpdGxlID0gIlVucm90YXRlZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV80X2QyX2FkX3Vucm90IDwtIGhlYXRtYXBfZnVuKGVmYV80X2QyX2FkX3Vucm90KSArCiAgbGFicyh0aXRsZSA9ICJBZHVsdHMiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgNC1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyBjaGlsZHJlbgpwbG90X2VmYV8zX2QyXzc5X3Vucm90IDwtIGhlYXRtYXBfZnVuKGVmYV8zX2QyXzc5X3Vucm90KSArCiAgbGFicyh0aXRsZSA9ICJDaGlkbHJlbiwgNy05eSIsIHN1YnRpdGxlID0gIlVucm90YXRlZCAzLWZhY3RvciBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjIgPC0gcGxvdF9ncmlkKHBsb3RfZWZhXzNfZDJfYWRfdW5yb3QsIHBsb3RfZWZhXzRfZDJfYWRfdW5yb3QsIAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzNfZDJfNzlfdW5yb3QsIAogICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9ICJBVVRPIiwgbmNvbCA9IDMsIHJlbF93aWR0aHMgPSBjKDEsIDEuMiwgMS4yKSkKCmZpZ3VyZUEuMl9jYXAgPC0gYWRkX3N1YihmaWd1cmVBLjIsIHN0cl93cmFwKCJGaWd1cmUgQS4yOiBGYWN0b3IgbG9hZGluZ3MgZnJvbSBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgb2YgU3R1ZHkgMiAoYXMgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUkpLCBiZWZvcmUgcm90YXRpb24uIChBKSBSZXN1bHRzIGZvciBVUyBhZHVsdHMsIHJldGFpbmluZyB0aHJlZSBmYWN0b3JzLiAoQikgUmVzdWx0cyBmb3IgVVMgYWR1bHRzLCByZXRhaW5pbmcgZm91ciBmYWN0b3JzLiAoQykgUmVzdWx0cyBmb3IgVVMgY2hpbGRyZW4gYWdlcyA3LTl5LiBBIGZhY3RvciBsb2FkaW5nIG9mICsxIGluZGljYXRlcyBhIHBlcmZlY3RseSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtZW50YWwgY2FwYWNpdHkgYW5kIHVuZGVybHlpbmcgY29uc3RydWN0OyBhIGxvYWRpbmcgb2YgLTEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IG5lZ2F0aXZlIHJlbGF0aW9uc2hpcC4iLCAyMTApLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuMiwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDksIGZpZy5hc3AgPSAwLjZ9CmdnZHJhdyhmaWd1cmVBLjJfY2FwKQpgYGAKCiMjIFN0dWR5IDMKCmBgYHtyfQplZmFfM19kM19hZF91bnJvdCA8LSBmYV9mdW4oZDNfYWRfd2lkZV9pLCAzKQplZmFfM19kM183OV91bnJvdCA8LSBmYV9mdW4oZDNfNzlfd2lkZV9pLCAzKQplZmFfMl9kM180Nl91bnJvdCA8LSBmYV9mdW4oZDNfNDZfd2lkZV9pLCAyKQplZmFfM19kM180Nl91bnJvdCA8LSBmYV9mdW4oZDNfNDZfd2lkZV9pLCAzKQpgYGAKCmBgYHtyfQojIGFkdWx0cwpwbG90X2VmYV8zX2QzX2FkX3Vucm90IDwtIGhlYXRtYXBfZnVuKGVmYV8zX2QzX2FkX3Vucm90KSArCiAgbGFicyh0aXRsZSA9ICJBZHVsdHMiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyBvbGRlciBjaGlsZHJlbgpwbG90X2VmYV8zX2QzXzc5X3Vucm90IDwtIGhlYXRtYXBfZnVuKGVmYV8zX2QzXzc5X3Vucm90KSArCiAgbGFicyh0aXRsZSA9ICJPbGRlciBjaGlsZHJlbiwgNy05eSIsIHN1YnRpdGxlID0gIlVucm90YXRlZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHlvdW5nZXIgY2hpbGRyZW4KcGxvdF9lZmFfM19kM180Nl91bnJvdCA8LSBoZWF0bWFwX2Z1bihlZmFfM19kM180Nl91bnJvdCkgKwogIGxhYnModGl0bGUgPSAiWW91bmdlciBjaGlsZHJlbiwgNC02eSIsIHN1YnRpdGxlID0gIlVucm90YXRlZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV8yX2QzXzQ2X3Vucm90IDwtIGhlYXRtYXBfZnVuKGVmYV8yX2QzXzQ2X3Vucm90KSArCiAgbGFicyh0aXRsZSA9ICJZb3VuZ2VyIGNoaWxkcmVuLCA0LTZ5Iiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDItZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgpgYGB7cn0KZmlndXJlQS4zIDwtIHBsb3RfZ3JpZChwbG90X2VmYV8zX2QzX2FkX3Vucm90LCBwbG90X2VmYV8zX2QzXzc5X3Vucm90LAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzNfZDNfNDZfdW5yb3QsIHBsb3RfZWZhXzJfZDNfNDZfdW5yb3QsCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gNCwgcmVsX3dpZHRocyA9IGMoMSwgMSwgMSwgMSkpCgpmaWd1cmVBLjNfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS4zLCBzdHJfd3JhcCgiRmlndXJlIEEuMzogRmFjdG9yIGxvYWRpbmdzIGZyb20gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2VzIG9mIFN0dWR5IDMgKGFzIHJlcG9ydGVkIGluIENoYXB0ZXIgSUlJKSwgYmVmb3JlIHJvdGF0aW9uLiAoQSkgUmVzdWx0cyBmb3IgVVMgYWR1bHRzLiAoQikgUmVzdWx0cyBmb3IgVVMgY2hpbGRyZW4gYWdlcyA3LTl5LiAoQykgUmVzdWx0cyBmb3IgVVMgY2hpbGRyZW4gYWdlcyA0LTZ5LCByZXRhaW5pbmcgdGhyZWUgZmFjdG9ycy4gKEQpIFJlc3VsdHMgZm9yIFVTIGNoaWxkcmVuIGFnZXMgNC02eSwgcmV0YWluaW5nIHR3byBmYWN0b3JzLiBBIGZhY3RvciBsb2FkaW5nIG9mICsxIGluZGljYXRlcyBhIHBlcmZlY3RseSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtZW50YWwgY2FwYWNpdHkgYW5kIHVuZGVybHlpbmcgY29uc3RydWN0OyBhIGxvYWRpbmcgb2YgLTEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IG5lZ2F0aXZlIHJlbGF0aW9uc2hpcC4iLCAyMTApLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuMywgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDksIGZpZy5hc3AgPSAwLjZ9CmdnZHJhdyhmaWd1cmVBLjNfY2FwKQpgYGAKCiMjIFN0dWR5IDQKCmBgYHtyfQplZmFfM19kNF9hZF91bnJvdCA8LSBmYV9mdW4oZDRfYWRfd2lkZV9pLCAzKQplZmFfM19kNF80Nl91bnJvdCA8LSBmYV9mdW4oZDRfNDZfd2lkZV9pLCAzKQplZmFfNF9kNF80Nl91bnJvdCA8LSBmYV9mdW4oZDRfNDZfd2lkZV9pLCA0KQpgYGAKCmBgYHtyfQojIGFkdWx0cwpwbG90X2VmYV8zX2Q0X2FkX3Vucm90IDwtIGhlYXRtYXBfZnVuKGVmYV8zX2Q0X2FkX3Vucm90KSArCiAgbGFicyh0aXRsZSA9ICJBZHVsdHMiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyB5b3VuZ2VyIGNoaWxkcmVuCnBsb3RfZWZhXzNfZDRfNDZfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDRfNDZfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIkNoaWxkcmVuLCA0LTV5Iiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzRfZDRfNDZfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzRfZDRfNDZfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIkNoaWxkcmVuLCA0LTV5Iiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgpgYGB7cn0KZmlndXJlQS40IDwtIHBsb3RfZ3JpZChwbG90X2VmYV8zX2Q0X2FkX3Vucm90LCBwbG90X2VmYV8zX2Q0XzQ2X3Vucm90LCAKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV80X2Q0XzQ2X3Vucm90LAogICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9ICJBVVRPIiwgbmNvbCA9IDMsIHJlbF93aWR0aHMgPSBjKDEsIDEsIDEuNCkpCgpmaWd1cmVBLjRfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS40LCBzdHJfd3JhcCgiRmlndXJlIEEuNDogRmFjdG9yIGxvYWRpbmdzIGZyb20gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2VzIG9mIFN0dWR5IDQgKGFzIHJlcG9ydGVkIGluIENoYXB0ZXIgSUlJKSwgYmVmb3JlIHJvdGF0aW9uLiAoQSkgUmVzdWx0cyBmb3IgVVMgYWR1bHRzLiAoQikgUmVzdWx0cyBmb3IgVVMgY2hpbGRyZW4gYWdlcyA0LTV5LCByZXRhaW5pbmcgdGhyZWUgZmFjdG9ycy4gKEMpIFJlc3VsdHMgZm9yIFVTIGNoaWxkcmVuIGFnZXMgNC01eSwgcmV0YWluaW5nIGZvdXIgZmFjdG9ycy4gQSBmYWN0b3IgbG9hZGluZyBvZiArMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgcG9zaXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWVudGFsIGNhcGFjaXR5IGFuZCB1bmRlcmx5aW5nIGNvbnN0cnVjdDsgYSBsb2FkaW5nIG9mIC0xIGluZGljYXRlcyBhIHBlcmZlY3RseSBuZWdhdGl2ZSByZWxhdGlvbnNoaXAuIiwgMjEwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjQsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA5LCBmaWcuYXNwID0gMC42fQpnZ2RyYXcoZmlndXJlQS40X2NhcCkKYGBgCgpgYGB7cn0KIyByZXNldCBFRkEgcGFyYW1ldGVycyB0byBkZWZhdWx0CnNvdXJjZSgiLi9zY3JpcHRzL2VmYV9wYXJhbS5SIikKYGBgCgoKIyBPYmxpbWluLXRyYW5zZm9ybWVkIHNvbHV0aW9ucwoKVGhyb3VnaG91dCB0aGlzIGRpc3NlcnRhdGlvbiwgSSBoYXZlIG9wdGVkIHRvIGZvY3VzIG9uIHZhcmltYXgtcm90YXRlZCBFRkEgc29sdXRpb25zLCBpbiB3aGljaCBmYWN0b3JzIGFyZSBjb25zdHJhaW5lZCB0byBiZSBvcnRob2dvbmFsIChpLmUuLCBpbnRlci1mYWN0b3IgY29ycmVsYXRpb25zIGFyZSAwKS4gSW4gbXkgKGFkbWl0dGVkbHkgYW5lY2RvdGFsKSBleHBlcmllbmNlLCB0aGlzIHJvdGF0aW9uIGhhcyB0ZW5kZWQgdG8gcHJvZHVjZSBzb2x1dGlvbnMgdGhhdCBhcmUgbW9yZSByZXBsaWNhYmxlIHdoZW4gc3R1ZGllcyBhcmUgcmVwZWF0ZWQgZXhhY3RseSwgbW9yZSBzaW1pbGFyIGFjcm9zcyB2YXJpYW50cyBvZiB0aGUgZW1waXJpY2FsIGFwcHJvYWNoLCBhbmQgZWFzaWVyIHRvIG1ha2UgZmFjdG9yIHJldGVudGlvbiBkZWNpc2lvbnMgYWJvdXQuIE9ydGhvZ29uYWwgc29sdXRpb25zIGFsc28gbGVuZCB0aGVtc2VsdmVzIG1vcmUgbmF0dXJhbGx5IHRvICJzY29yaW5nIiBpbmRpdmlkdWFsIHBhcnRpY2lwYW50cyBvbiBlYWNoIG9mIHRoZSB1bmRlcmx5aW5nIGNvbnN0cnVjdHMgYmVjYXVzZSBmYWN0b3JzIGFyZSwgYnkgZGVmaW5pdGlvbiwgbWF4aW1hbGx5IGRpc3RpbmN0IGZyb20gb25lIGFub3RoZXIuIFNpbmNlIGNvbXBhcmluZyBFRkEgc29sdXRpb25zIGFjcm9zcyBzdHVkaWVzIGFuZCBhZ2UgZ3JvdXBzIChDaGFwdGVyIElJSSkgYW5kIHVzaW5nIHRoZXNlIHNvbHV0aW9ucyB0byAic2NvcmUiIHBhcnRpY2lwYW50cyBvbiB0aGVpciBhc3Nlc3NtZW50cyBvZiB0aGUgbWVudGFsIGxpdmVzIG9mIGRpZmZlcmVudCB0YXJnZXQgY2hhcmFjdGVycyAoQ2hhcHRlciBWKSBhcmUgdHdvIG9mIHRoZSBtYWluIGdvYWxzIG9mIHRoaXMgZGlzc2VydGF0aW9uLCB2YXJpbWF4IHJvdGF0aW9ucyBzZWVtZWQgdG8gbWUgdG8gYmUgYXBwcm9wcmlhdGUgZm9yIG15IGN1cnJlbnQgcHVycG9zZXMuIAoKSG93ZXZlciwgIm9ibGlxdWUiIHRyYW5zZm9ybWF0aW9ucywgc3VjaCBhcyB0aGUgIm9ibGltaW4iIHRyYW5zZm9ybWF0aW9uLCBhbHNvIGNvbmZlciBtYW55IGFkdmFudGFnZXMgaW4gdXNpbmcgRUZBIHRvIGlkZW50aWZ5IGNvbnN0cnVjdHMgb2YgdGhlb3JldGljYWwgaW50ZXJlc3QgKGZvciBkaXNjdXNzaW9uLCBzZWUgUmV2ZWxsZSwgMjAxOCwgQ2hhcHRlciA2KS4gSW4gY29udHJhc3QgdG8gb3J0aG9nb25hbCByb3RhdGlvbnMsIG9ibGlxdWUgdHJhbnNmb3JtYXRpb25zIGFsbG93IGZhY3RvcnMgdG8gY29ycmVsYXRlIHdpdGggZWFjaCBvdGhlci4gSW4gcmVtb3ZpbmcgdGhlIG9ydGhnb25hbGl0eSBjb25zdHJhaW50LCBvYmxpcXVlIHRyYW5zZm9ybWF0aW9ucyB0aHVzIHJldmVhbCByZWxhdGlvbnNoaXBzIGJldHdlZW4gdmFyaWFibGVzIChpbiBteSBjYXNlLCBtZW50YWwgY2FwYWNpdGllcykgYW5kIGZhY3RvcnMgKGNvbmNlcHR1YWwgdW5pdHMpIHRoYXQgbWlnaHQgYmUgY29uc2lkZXJlZCBtb3JlICJuYXR1cmFsIjsgdGhleSBtaWdodCBhbHNvIHJldmVhbCBuZXcgYXNwZWN0cyBvZiB0aGUgcmVsYXRpb25zaGlwcyBhbW9uZyBmYWN0b3JzIHRoZW1zZWx2ZXMgKHBlcnRpbmVudCB0byBteSBnb2FscyBpbiBDaGFwdGVyIFYpLgoKSW4gdGhlIGludGVyZXN0IG9mIGFkZGluZyBudWFuY2UgdG8gbXkgcHJpbWFyeSBkaXNjdXNzaW9ucyBvZiB0aGUgY29uY2VwdHVhbCB1bml0cyBpZGVudGlmaWVkIGJ5IEVGQSAoQ2hhdHBlciBJSUkpIGFuZCB0aGUgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGVzZSB1bml0cyAoQ2hhcHRlciBWKSwgaGVyZSBJIHByZXNlbnQgb2JsaW1pbi10cmFuc2Zvcm1lZCBFRkEgc29sdXRpb25zIGZvciBhbGwgc3R1ZGllcy4KCmBgYHtyfQojIHJlc2V0IEVGQSBwYXJhbWV0ZXJzIHRvIGRlZmF1bHQsIHRoZW4gc2V0IGNob3NlbiByb3RhdGlvbiB0byBvYmxpbWluCnNvdXJjZSgiLi9zY3JpcHRzL2VmYV9wYXJhbS5SIikKY2hvc2VuX3JvdCA8LSAib2JsaW1pbiIKYGBgCgpgYGB7cn0KIyBjaGVjayB3aGV0aGVyIHJvdGF0aW9uIGltcGFjdHMgZmFjdG9yIHJldGVudGlvbiAoaXQgZG9lc24ndCkKcmV0ZW5fcmVwb3J0X29ibGltaW4gPC0gbGlzdCgiU3R1ZHkgMWEiID0gZDFhX2FkX3dpZGVfaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3R1ZHkgMWIiID0gZDFiX2FkX3dpZGVfaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3R1ZHkgMWMiID0gZDFjX2FkX3dpZGVfaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3R1ZHkgMWQiID0gZDFkX2FkX3dpZGVfaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3R1ZHkgMjogQWR1bHRzIiA9IGQyX2FkX3dpZGVfaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3R1ZHkgMjogQ2hpbGRyZW4gKDctOXkpIiA9IGQyXzc5X3dpZGVfaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3R1ZHkgMzogQWR1bHRzIiA9IGQzX2FkX3dpZGVfaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3R1ZHkgMzogT2xkZXIgY2hpbGRyZW4gKDctOXkpIiA9IGQzXzc5X3dpZGVfaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3R1ZHkgMzogWW91bmdlciBjaGlsZHJlbiAoNC02eSkiID0gZDNfNDZfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSA0OiBBZHVsdHMiID0gZDRfYWRfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSA0OiBDaGlsZHJlbiAoNC01eSkiID0gZDRfNDZfd2lkZV9pKSAlPiUKICByZXRlbl9yZXBvcnRfZnVuKCkKcmV0ZW5fcmVwb3J0X29ibGltaW4KYGBgCgoKIyMgU3R1ZHkgMQoKIyMjIEVGQSBzb2x1dGlvbnMKCkRpZmZlcmVudCBmYWN0b3IgcmV0ZW50aW9uIHByb3RvY29scyBzdWdnZXN0ZWQgcmV0YWluaW5nIGJldHdlZW4gMy01IGZhY3RvcnMgZm9yIFN0dWRpZXMgMWEtMWQuIEhlcmUsIEkgcmVwb3J0IDMtLCA0LSwgYW5kIDUtZmFjdG9yIHNvbHV0aW9ucyBmb3IgYWxsIG9mIHRoZXNlIHN0dWRpZXMuIFdoZW4gdGhlc2UgZmFjdG9ycyBzZWVtIHNpbWlsYXIgdG8gdGhlIEJPRFksIEhFQVJULCBhbmQgTUlORCBmYWN0b3JzIHByZXNlbnRlZCBpbiBDaGFwdGVyIElJSSwgSSBoYXZlIGxhYmVsZWQgdGhlbSBhY2NvcmRpbmdseS4KCmBgYHtyfQplZmFfM19kMWFfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDFhX2FkX3dpZGVfaSwgMykKZWZhXzNfZDFiX2FkX29ibGltaW4gPC0gZmFfZnVuKGQxYl9hZF93aWRlX2ksIDMpCmVmYV8zX2QxY19hZF9vYmxpbWluIDwtIGZhX2Z1bihkMWNfYWRfd2lkZV9pLCAzKQplZmFfM19kMWRfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDFkX2FkX3dpZGVfaSwgMykKCmVmYV80X2QxYV9hZF9vYmxpbWluIDwtIGZhX2Z1bihkMWFfYWRfd2lkZV9pLCA0KQplZmFfNF9kMWJfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDFiX2FkX3dpZGVfaSwgNCkKZWZhXzRfZDFjX2FkX29ibGltaW4gPC0gZmFfZnVuKGQxY19hZF93aWRlX2ksIDQpCmVmYV80X2QxZF9hZF9vYmxpbWluIDwtIGZhX2Z1bihkMWRfYWRfd2lkZV9pLCA0KQoKZWZhXzVfZDFhX2FkX29ibGltaW4gPC0gZmFfZnVuKGQxYV9hZF93aWRlX2ksIDUpCmVmYV81X2QxYl9hZF9vYmxpbWluIDwtIGZhX2Z1bihkMWJfYWRfd2lkZV9pLCA1KQplZmFfNV9kMWNfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDFjX2FkX3dpZGVfaSwgNSkKZWZhXzVfZDFkX2FkX29ibGltaW4gPC0gZmFfZnVuKGQxZF9hZF93aWRlX2ksIDUpCmBgYAoKYGBge3J9CmZhY3Rvcl9uYW1lc19lZmFfM19kMWFfYWRfb2JsaW1pbiA8LSBjKCJIRUFSVCIsICJCT0RZIiwgIk1JTkQiKQpmYWN0b3JfbmFtZXNfZWZhXzNfZDFiX2FkX29ibGltaW4gPC0gYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIikKZmFjdG9yX25hbWVzX2VmYV8zX2QxY19hZF9vYmxpbWluIDwtIGMoIkhFQVJUIiwgIkJPRFkiLCAiTUlORCIpCmZhY3Rvcl9uYW1lc19lZmFfM19kMWRfYWRfb2JsaW1pbiA8LSBjKCJCT0RZIiwgIkhFQVJUIiwgIk1JTkQiKQoKZmFjdG9yX25hbWVzX2VmYV80X2QxYV9hZF9vYmxpbWluIDwtIGMoIkhFQVJUIiwgIkJPRFkiLCAiTUlORCAocGVyY2VwdGlvbikiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQgKGFnZW5jeSkiKQpmYWN0b3JfbmFtZXNfZWZhXzRfZDFiX2FkX29ibGltaW4gPC0gYygiSEVBUlQgKHNvY2lhbCkiLCAiTUlORCIsICJCT0RZIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCAoYmFzaWMpIikKZmFjdG9yX25hbWVzX2VmYV80X2QxY19hZF9vYmxpbWluIDwtIGMoIkhFQVJUIiwgIk1JTkQgKGFnZW5jeSkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJPRFkgdnMuIE1JTkQiLCAiTUlORCAocGVyY2VwdGlvbikiKQpmYWN0b3JfbmFtZXNfZWZhXzRfZDFkX2FkX29ibGltaW4gPC0gYygiSEVBUlQiLCAiTUlORCIsICJCT0RZIiwgIkZhY3RvciA0IikKCmZhY3Rvcl9uYW1lc19lZmFfNV9kMWFfYWRfb2JsaW1pbiA8LSBjKCJIRUFSVCAoc29jaWFsKSIsICJCT0RZIHZzLiBNSU5EIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCAoYmFzaWMpIiwgIk1JTkQgKHBlcmNlcHRpb24pIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQgKGFnZW5jeSkiKQpmYWN0b3JfbmFtZXNfZWZhXzVfZDFiX2FkX29ibGltaW4gPC0gYygiQk9EWSB2cy4gTUlORCIsICJIRUFSVCAoc29jaWFsKSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCAocGVyY2VwdGlvbikiLCAiSEVBUlQgKGJhc2ljKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIChjb2duaXRpb24pIikKZmFjdG9yX25hbWVzX2VmYV81X2QxY19hZF9vYmxpbWluIDwtIGMoIkhFQVJUIChzb2NpYWwpIiwgIk1JTkQgKGFnZW5jeSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCAocGVyY2VwdGlvbikiLCAiTUlORCB2cy4gQk9EWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWN0b3IgNSIpCmZhY3Rvcl9uYW1lc19lZmFfNV9kMWRfYWRfb2JsaW1pbiA8LSBjKCJIRUFSVCAoYmFzaWMpIiwgIkhFQVJUIChzb2NpYWwpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQgKHBlcmNlcHRpb24pIiwgIk1JTkQgKGFnZW5jeSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSB2cy4gTUlORCIpCmBgYAoKYGBge3J9CiMgc3R1ZHkgMWEKcGxvdF9lZmFfM19kMWFfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfM19kMWFfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2QxYV9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYSIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfNF9kMWFfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfNF9kMWFfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV80X2QxYV9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYSIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNC1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfNV9kMWFfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfNV9kMWFfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV81X2QxYV9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYSIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNS1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyBzdHVkeSAxYgpwbG90X2VmYV8zX2QxYl9hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV8zX2QxYl9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDFiX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFiIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV80X2QxYl9hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV80X2QxYl9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzRfZDFiX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFiIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV81X2QxYl9hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV81X2QxYl9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzVfZDFiX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFiIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA1LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHN0dWR5IDFjCnBsb3RfZWZhXzNfZDFjX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzNfZDFjX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kMWNfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWMiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzRfZDFjX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzRfZDFjX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNF9kMWNfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWMiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzVfZDFjX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzVfZDFjX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNV9kMWNfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWMiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDUtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgc3R1ZHkgMWQKcGxvdF9lZmFfM19kMWRfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfM19kMWRfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2QxZF9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxZCIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzRfZDFkX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzRfZDFkX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNF9kMWRfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWQiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDQtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV81X2QxZF9hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV81X2QxZF9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzVfZDFkX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFkIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA1LWZhY3RvciBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjUgPC0gcGxvdF9ncmlkKHBsb3RfZWZhXzNfZDFhX2FkX29ibGltaW4sIHBsb3RfZWZhXzNfZDFiX2FkX29ibGltaW4sIAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzNfZDFjX2FkX29ibGltaW4sIHBsb3RfZWZhXzNfZDFkX2FkX29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgcGxvdF9lZmFfNF9kMWFfYWRfb2JsaW1pbiwgcGxvdF9lZmFfNF9kMWJfYWRfb2JsaW1pbiwgCiAgICAgICAgICAgICAgICAgICAgICAgcGxvdF9lZmFfNF9kMWNfYWRfb2JsaW1pbiwgcGxvdF9lZmFfNF9kMWRfYWRfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV81X2QxYV9hZF9vYmxpbWluLCBwbG90X2VmYV81X2QxYl9hZF9vYmxpbWluLCAKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV81X2QxY19hZF9vYmxpbWluLCBwbG90X2VmYV81X2QxZF9hZF9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9ICJBVVRPIiwgbmNvbCA9IDQsIHJlbF93aWR0aHMgPSBjKDEsIDEsIDEsIDEuMikpCgpmaWd1cmVBLjVfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS41LCBzdHJfd3JhcCgiRmlndXJlIEEuNTogRmFjdG9yIGxvYWRpbmdzIGZyb20gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2VzIG9mIFN0dWR5IDEgYWZ0ZXIgb2JsaW1pbiB0cmFuc2Zvcm1hdGlvbi4gQWxsIHJlc3VsdHMgYXJlIGZyb20gVVMgYWR1bHQgc2FtcGxlczsgc2VlIENoYXB0ZXIgSUkgZm9yIG1ldGhvZHMuIChBKSBTdHVkeSAxYS4gKEIpIFN0dWR5IDFiLiAoQykgU3R1ZHkgMWMuIChEKSBTdHVkeSAxZC4gSW4gdGhpcyBhbmQgYWxsIGZpZ3VyZXMgcG9ydHJheWluZyBmYWN0b3IgbG9hZGluZ3MsIGZhY3RvcnMgaGF2ZSBiZWVuIHBsb3R0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgKEJPRFksIEhFQVJULCBNSU5EKSwgd2hlbiBhcHBsaWNhYmxlLCB0byBmYWNpbGl0YXRlIGNvbXBhcmlzb24gYWNyb3NzIHN0dWRpZXMuIEEgZmFjdG9yIGxvYWRpbmcgb2YgKzEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IHBvc2l0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG1lbnRhbCBjYXBhY2l0eSBhbmQgdW5kZXJseWluZyBjb25zdHJ1Y3Q7IGEgbG9hZGluZyBvZiAtMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgbmVnYXRpdmUgcmVsYXRpb25zaGlwLiIsIDM2MCksIHggPSAwLCBoanVzdCA9IDApCmBgYAoKYGBge3IgZmlndXJlQS41LCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gMTYsIGZpZy5hc3AgPSAxLjR9CmdnZHJhdyhmaWd1cmVBLjVfY2FwKQpgYGAKCiMjIyBJbnRlci1mYWN0b3IgY29ycmVsYXRpb25zCgpIZXJlIEkgcHJlc2VudCBpbnRlci1mYWN0b3IgY29ycmVsYXRpb25zIGZvciBhbGwgb2YgdGhlIGFib3ZlIEVGQSBzb2x1dGlvbnMgZm9yIFN0dWRpZXMgMWEtMWQuIAoKYGBge3J9CiMgc3R1ZHkgMWEKSUZjb3JfZWZhXzNfZDFhX2FkX29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzNfZDFhX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kMWFfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWEiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCklGY29yX2VmYV80X2QxYV9hZF9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV80X2QxYV9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzRfZDFhX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFhIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpJRmNvcl9lZmFfNV9kMWFfYWRfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfNV9kMWFfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV81X2QxYV9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYSIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNS1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyBzdHVkeSAxYgpJRmNvcl9lZmFfM19kMWJfYWRfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfM19kMWJfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2QxYl9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYiIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKSUZjb3JfZWZhXzRfZDFiX2FkX29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzRfZDFiX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNF9kMWJfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWIiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCklGY29yX2VmYV81X2QxYl9hZF9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV81X2QxYl9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzVfZDFiX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFiIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA1LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHN0dWR5IDFjCklGY29yX2VmYV8zX2QxY19hZF9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV8zX2QxY19hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDFjX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFjIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpJRmNvcl9lZmFfNF9kMWNfYWRfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfNF9kMWNfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV80X2QxY19hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYyIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNC1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKSUZjb3JfZWZhXzVfZDFjX2FkX29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzVfZDFjX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNV9kMWNfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWMiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDUtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgc3R1ZHkgMWQKSUZjb3JfZWZhXzNfZDFkX2FkX29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzNfZDFkX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kMWRfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWQiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpJRmNvcl9lZmFfNF9kMWRfYWRfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfNF9kMWRfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV80X2QxZF9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxZCIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNC1mYWN0b3Igc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCklGY29yX2VmYV81X2QxZF9hZF9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV81X2QxZF9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzVfZDFkX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFkIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA1LWZhY3RvciBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjYgPC0gcGxvdF9ncmlkKElGY29yX2VmYV8zX2QxYV9hZF9vYmxpbWluLCBJRmNvcl9lZmFfM19kMWJfYWRfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgSUZjb3JfZWZhXzNfZDFjX2FkX29ibGltaW4sIElGY29yX2VmYV8zX2QxZF9hZF9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgICBJRmNvcl9lZmFfNF9kMWFfYWRfb2JsaW1pbiwgSUZjb3JfZWZhXzRfZDFiX2FkX29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgIElGY29yX2VmYV80X2QxY19hZF9vYmxpbWluLCBJRmNvcl9lZmFfNF9kMWRfYWRfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgSUZjb3JfZWZhXzVfZDFhX2FkX29ibGltaW4sIElGY29yX2VmYV81X2QxYl9hZF9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgICBJRmNvcl9lZmFfNV9kMWNfYWRfb2JsaW1pbiwgSUZjb3JfZWZhXzVfZDFkX2FkX29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9ICJBVVRPIiwgbmNvbCA9IDQsIHJlbF93aWR0aHMgPSBjKDEsIDEsIDEsIDEuMikpCgpmaWd1cmVBLjZfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS42LCBzdHJfd3JhcCgiRmlndXJlIEEuNjogSW50ZXItZmFjdG9yIGNvcnJlbGF0aW9ucyBmcm9tIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAxIGFmdGVyIG9ibGltaW4gdHJhbnNmb3JtYXRpb24uIEFsbCByZXN1bHRzIGFyZSBmcm9tIFVTIGFkdWx0IHNhbXBsZXM7IHNlZSBDaGFwdGVyIElJIGZvciBtZXRob2RzLiAoQSkgU3R1ZHkgMWEuIChCKSBTdHVkeSAxYi4gKEMpIFN0dWR5IDFjLiAoRCkgU3R1ZHkgMWQuIEZhY3RvcnMgaGF2ZSBiZWVuIGxhYmVsZWQgd2l0aCB0aGUgbGFiZWxzICdCT0RZLCcgJ0hFQVJULCcgYW5kICdNSU5ELCcgd2hlbiBhcHBsaWNhYmxlLCB0byBmYWNpbGl0YXRlIGNvbXBhcmlzb24gYWNyb3NzIHN0dWRpZXMuIiwgMTkwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjYsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA4LCBmaWcuYXNwID0gMC44fQpnZ2RyYXcoZmlndXJlQS42X2NhcCkKYGBgCgojIyBTdHVkeSAyCgojIyMgRUZBIHNvbHV0aW9ucwoKRGlmZmVyZW50IGZhY3RvciByZXRlbnRpb24gcHJvdG9jb2xzIHN1Z2dlc3RlZCByZXRhaW5pbmcgZWl0aGVyIDMgb3IgNCBmYWN0b3JzIGZvciBhZHVsdHMgaW4gU3R1ZHkgMjsgYWxsIHByb3RvY29scyBzdWdnZXN0ZWQgcmV0YWluaW5nIDMgZmFjdG9ycyBmb3IgY2hpbGRyZW4gKGFnZXMgNy05eSkuIEhlcmUsIEkgcmVwb3J0IDMtLCBhbmQgNC1mYWN0b3Igc29sdXRpb25zIGZvciBhZHVsdHMgYW5kIHRoZSAzLWZhY3RvciBzb2x1dGlvbiBmb3IgY2hpbGRyZW4uIFdoZW4gdGhlc2UgZmFjdG9ycyBzZWVtIHNpbWlsYXIgdG8gdGhlIEJPRFksIEhFQVJULCBhbmQgTUlORCBmYWN0b3JzIHByZXNlbnRlZCBpbiBDaGFwdGVyIElJSSwgSSBoYXZlIGxhYmVsZWQgdGhlbSBhY2NvcmRpbmdseS4KCmBgYHtyfQplZmFfM19kMl9hZF9vYmxpbWluIDwtIGZhX2Z1bihkMl9hZF93aWRlX2ksIDMpCmVmYV80X2QyX2FkX29ibGltaW4gPC0gZmFfZnVuKGQyX2FkX3dpZGVfaSwgNCkKZWZhXzNfZDJfNzlfb2JsaW1pbiA8LSBmYV9mdW4oZDJfNzlfd2lkZV9pLCAzKQpgYGAKCmBgYHtyfQpmYWN0b3JfbmFtZXNfZWZhXzNfZDJfYWRfb2JsaW1pbiA8LSBjKCJIRUFSVCIsICJCT0RZIiwgIk1JTkQiKQpmYWN0b3JfbmFtZXNfZWZhXzRfZDJfYWRfb2JsaW1pbiA8LSBjKCJIRUFSVCIsICJCT0RZIHZzLiBNSU5EIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQgKGFnZW5jeSkiLCAiTUlORCAocGVyY2VwdGlvbikiKQpmYWN0b3JfbmFtZXNfZWZhXzNfZDJfNzlfb2JsaW1pbiA8LSBjKCJIRUFSVCIsICJCT0RZIHZzLiBNSU5EIiwgIk1JTkQiKQpgYGAKCmBgYHtyfQpwbG90X2VmYV8zX2QyX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzNfZDJfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2QyX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDIsIEFkdWx0cyIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV80X2QyX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzRfZDJfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV80X2QyX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDIsIEFkdWx0cyIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV8zX2QyXzc5X29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzNfZDJfNzlfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2QyXzc5X29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDIsIENoaWxkcmVuICg3LTl5KSIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjcgPC0gcGxvdF9ncmlkKHBsb3RfZWZhXzNfZDJfYWRfb2JsaW1pbiwgcGxvdF9lZmFfNF9kMl9hZF9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzNfZDJfNzlfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSAzLCByZWxfd2lkdGhzID0gYygxLCAxLjIsIDEuMikpCgpmaWd1cmVBLjdfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS43LCBzdHJfd3JhcCgiRmlndXJlIEEuNzogRmFjdG9yIGxvYWRpbmdzIGZyb20gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2VzIG9mIFN0dWR5IDIgYWZ0ZXIgb2JsaW1pbiB0cmFuc2Zvcm1hdGlvbi4gU2VlIENoYXB0ZXIgSUkgZm9yIG1ldGhvZHMuIChBKSBVUyBhZHVsdHMsIDMtZmFjdG9yIHNvbHV0aW9uLiAoQikgVVMgYWR1bHRzLCA0LWZhY3RvciBzb2x1dGlvbi4gKEMpIFVTIGNoaWxkcmVuIGFnZXMgNy05eS4gSW4gdGhpcyBhbmQgYWxsIGZpZ3VyZXMgcG9ydHJheWluZyBmYWN0b3IgbG9hZGluZ3MsIGZhY3RvcnMgaGF2ZSBiZWVuIHBsb3R0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgKEJPRFksIEhFQVJULCBNSU5EKSwgd2hlbiBhcHBsaWNhYmxlLCB0byBmYWNpbGl0YXRlIGNvbXBhcmlzb24gYWNyb3NzIHN0dWRpZXMuIEEgZmFjdG9yIGxvYWRpbmcgb2YgKzEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IHBvc2l0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG1lbnRhbCBjYXBhY2l0eSBhbmQgdW5kZXJseWluZyBjb25zdHJ1Y3Q7IGEgbG9hZGluZyBvZiAtMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgbmVnYXRpdmUgcmVsYXRpb25zaGlwLiIsIDIxMCksIHggPSAwLCBoanVzdCA9IDApCmBgYAoKYGBge3IgZmlndXJlQS43LCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gOSwgZmlnLmFzcCA9IDAuNn0KZ2dkcmF3KGZpZ3VyZUEuN19jYXApCmBgYAoKIyMjIEludGVyLWZhY3RvciBjb3JyZWxhdGlvbnMKCkhlcmUgSSBwcmVzZW50IGludGVyLWZhY3RvciBjb3JyZWxhdGlvbnMgZm9yIGFsbCBvZiB0aGUgYWJvdmUgRUZBIHNvbHV0aW9ucyBmb3IgU3R1ZHkgMi4gCgpgYGB7cn0KSUZjb3JfZWZhXzNfZDJfYWRfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfM19kMl9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDJfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMiwgQWR1bHRzIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCklGY29yX2VmYV80X2QyX2FkX29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzRfZDJfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV80X2QyX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDIsIEFkdWx0cyIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpJRmNvcl9lZmFfM19kMl83OV9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV8zX2QyXzc5X29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kMl83OV9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAyLCBDaGlsZHJlbiAoNy05eSkiLCAKICAgICAgIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgpgYGB7cn0KZmlndXJlQS44IDwtIHBsb3RfZ3JpZChJRmNvcl9lZmFfM19kMl9hZF9vYmxpbWluLCBJRmNvcl9lZmFfNF9kMl9hZF9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgICBJRmNvcl9lZmFfM19kMl83OV9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSAzLCByZWxfd2lkdGhzID0gYygxLCAxLCAxLjIpKQoKZmlndXJlQS44X2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuOCwgc3RyX3dyYXAoIkZpZ3VyZSBBLjg6IEludGVyLWZhY3RvciBjb3JyZWxhdGlvbnMgZnJvbSBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgb2YgU3R1ZHkgMiBhZnRlciBvYmxpbWluIHRyYW5zZm9ybWF0aW9uLiBTZWUgQ2hhcHRlciBJSSBmb3IgbWV0aG9kcy4gKEEpIFVTIGFkdWx0cywgMy1mYWN0b3Igc29sdXRpb24uIChCKSBVUyBhZHVsdHMsIDQtZmFjdG9yIHNvbHV0aW9uLiAoQykgVVMgY2hpbGRyZW4gYWdlcyA3LTl5LiBGYWN0b3JzIGhhdmUgYmVlbiBsYWJlbGVkIHdpdGggdGhlIGxhYmVscyAnQk9EWSwnICdIRUFSVCwnIGFuZCAnTUlORCwnIHdoZW4gYXBwbGljYWJsZSwgdG8gZmFjaWxpdGF0ZSBjb21wYXJpc29uIGFjcm9zcyBzdHVkaWVzLiIsIDE0MCksIHggPSAwLCBoanVzdCA9IDApCmBgYAoKYGBge3IgZmlndXJlQS44LCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDAuNH0KZ2dkcmF3KGZpZ3VyZUEuOF9jYXApCmBgYAoKCiMjIFN0dWR5IDMKCiMjIyBFRkEgc29sdXRpb25zCgpWYXJpb3VzIGZhY3RvciByZXRlbnRpb24gcHJvdG9jb2xzIHN1Z2dlc3RlZCByZXRhaW5pbmcgZWl0aGVyIDMgb3IgNCBmYWN0b3JzIGZvciBhZHVsdHMgaW4gU3R1ZHkgMzsgMyBmYWN0b3JzIGZvciBvbGRlciBjaGlsZHJlbiAoYWdlcyA3LTl5KTsgYW5kIGVpdGhlciAxLCAzLCBvciA0IGZhY3RvcnMgZm9yIHlvdW5nZXIgY2hpbGRyZW4gKGFnZXMgNC02eSkuIEhlcmUsIEkgcmVwb3J0IDMtLCBhbmQgNC1mYWN0b3Igc29sdXRpb25zIGZvciBhZHVsdHMsIHRoZSAzLWZhY3RvciBzb2x1dGlvbiBmb3Igb2xkZXIgY2hpbGRyZW4sIGFuZCB0aGUgMS0sIDMtLCBhbmQgNC1mYWN0b3Igc29sdXRpb25zIGZvciB5b3VuZ2VyIGNoaWxkcmVuLiBXaGVuIHRoZXNlIGZhY3RvcnMgc2VlbSBzaW1pbGFyIHRvIHRoZSBCT0RZLCBIRUFSVCwgYW5kIE1JTkQgZmFjdG9ycyBwcmVzZW50ZWQgaW4gQ2hhcHRlciBJSUksIEkgaGF2ZSBsYWJlbGVkIHRoZW0gYWNjb3JkaW5nbHkuCgpgYGB7cn0KZWZhXzNfZDNfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDNfYWRfd2lkZV9pLCAzKQplZmFfNF9kM19hZF9vYmxpbWluIDwtIGZhX2Z1bihkM19hZF93aWRlX2ksIDQpCmVmYV8zX2QzXzc5X29ibGltaW4gPC0gZmFfZnVuKGQzXzc5X3dpZGVfaSwgMykKZWZhXzNfZDNfNDZfb2JsaW1pbiA8LSBmYV9mdW4oZDNfNDZfd2lkZV9pLCAzKQplZmFfMl9kM180Nl9vYmxpbWluIDwtIGZhX2Z1bihkM180Nl93aWRlX2ksIDIpCmVmYV8xX2QzXzQ2X29ibGltaW4gPC0gZmFfZnVuKGQzXzQ2X3dpZGVfaSwgMSkKYGBgCgpgYGB7cn0KZmFjdG9yX25hbWVzX2VmYV8zX2QzX2FkX29ibGltaW4gPC0gYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIikKZmFjdG9yX25hbWVzX2VmYV80X2QzX2FkX29ibGltaW4gPC0gYygiQk9EWSIsICJNSU5EIiwgIkhFQVJUIChzb2NpYWwpIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhFQVJUIChiYXNpYykiKQpmYWN0b3JfbmFtZXNfZWZhXzNfZDNfNzlfb2JsaW1pbiA8LSBjKCJCT0RZIiwgIkhFQVJUIiwgIk1JTkQiKQpmYWN0b3JfbmFtZXNfZWZhXzNfZDNfNDZfb2JsaW1pbiA8LSBjKCJCT0RZLUhFQVJUIChuZWdhdGl2ZSkiLCAiQk9EWS1IRUFSVCAocG9zaXRpdmUpIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQiKQpmYWN0b3JfbmFtZXNfZWZhXzJfZDNfNDZfb2JsaW1pbiA8LSBjKCJCT0RZLUhFQVJUIiwgIk1JTkQiKQpmYWN0b3JfbmFtZXNfZWZhXzFfZDNfNDZfb2JsaW1pbiA8LSBjKCJOQSIpCmBgYAoKYGBge3J9CnBsb3RfZWZhXzNfZDNfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfM19kM19hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDNfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMywgQWR1bHRzIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzRfZDNfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfNF9kM19hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzRfZDNfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMywgQWR1bHRzIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzNfZDNfNzlfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfM19kM183OV9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDNfNzlfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMywgT2xkZXIgY2hpbGRyZW4gKDctOXkpIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV8zX2QzXzQ2X29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzNfZDNfNDZfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2QzXzQ2X29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDMsIFlvdW5nZXIgY2hpbGRyZW4gKDQtNnkpIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzJfZDNfNDZfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfMl9kM180Nl9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzJfZDNfNDZfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMywgWW91bmdlciBjaGlsZHJlbiAoNC02eSkiLCAKICAgICAgIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMi1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfMV9kM180Nl9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV8xX2QzXzQ2X29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfMV9kM180Nl9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAzLCBZb3VuZ2VyIGNoaWxkcmVuICg0LTZ5KSIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAxLWZhY3RvciAobnVsbCkgc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgpgYGB7cn0KZmlndXJlQS45IDwtIHBsb3RfZ3JpZChwbG90X2VmYV8zX2QzX2FkX29ibGltaW4sIHBsb3RfZWZhXzRfZDNfYWRfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV8zX2QzXzc5X29ibGltaW4sIHBsb3RfZWZhXzNfZDNfNDZfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV8yX2QzXzQ2X29ibGltaW4sIHBsb3RfZWZhXzFfZDNfNDZfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSAzLCByZWxfd2lkdGhzID0gYygxLCAxLCAxLjIpKQoKZmlndXJlQS45X2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuOSwgc3RyX3dyYXAoIkZpZ3VyZSBBLjk6IEZhY3RvciBsb2FkaW5ncyBmcm9tIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAzIGFmdGVyIG9ibGltaW4gdHJhbnNmb3JtYXRpb24uIFNlZSBDaGFwdGVyIElJIGZvciBtZXRob2RzLiAoQSkgVVMgYWR1bHRzLCAzLWZhY3RvciBzb2x1dGlvbi4gKEIpIFVTIGFkdWx0cywgNC1mYWN0b3Igc29sdXRpb24uIChDKSBVUyBjaGlsZHJlbiBhZ2VzIDctOXkuIChEKSBVUyBjaGlsZHJlbiBhZ2VzIDQtNnksIDMtZmFjdG9yIHNvbHV0aW9uLiAoRSkgVVMgY2hpbGRyZW4gYWdlcyA0LTZ5LCAyLWZhY3RvciBzb2x1dGlvbi4gKEYpIFVTIGNoaWxkcmVuIGFnZXMgNC02eSwgMS1mYWN0b3IgKG51bGwpIHNvbHV0aW9uLiBJbiB0aGlzIGFuZCBhbGwgZmlndXJlcyBwb3J0cmF5aW5nIGZhY3RvciBsb2FkaW5ncywgZmFjdG9ycyBoYXZlIGJlZW4gcGxvdHRlZCBpbiB0aGUgc2FtZSBvcmRlciAoQk9EWSwgSEVBUlQsIE1JTkQpLCB3aGVuIGFwcGxpY2FibGUsIHRvIGZhY2lsaXRhdGUgY29tcGFyaXNvbiBhY3Jvc3Mgc3R1ZGllcy4gQSBmYWN0b3IgbG9hZGluZyBvZiArMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgcG9zaXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWVudGFsIGNhcGFjaXR5IGFuZCB1bmRlcmx5aW5nIGNvbnN0cnVjdDsgYSBsb2FkaW5nIG9mIC0xIGluZGljYXRlcyBhIHBlcmZlY3RseSBuZWdhdGl2ZSByZWxhdGlvbnNoaXAuIiwgMjEwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjksIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA5LCBmaWcuYXNwID0gMX0KZ2dkcmF3KGZpZ3VyZUEuOV9jYXApCmBgYAoKIyMjIEludGVyLWZhY3RvciBjb3JyZWxhdGlvbnMKCkhlcmUgSSBwcmVzZW50IGludGVyLWZhY3RvciBjb3JyZWxhdGlvbnMgZm9yIGFsbCBvZiB0aGUgYWJvdmUgRUZBIHNvbHV0aW9ucyBmb3IgU3R1ZHkgMyAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSAxLWZhY3RvciBudWxsIHNvbHV0aW9uIGZvciB5b3VuZ2VyIGNoaWxkcmVuKS4gCgpgYGB7cn0KSUZjb3JfZWZhXzNfZDNfYWRfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfM19kM19hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDNfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMywgQWR1bHRzIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCklGY29yX2VmYV80X2QzX2FkX29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzRfZDNfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV80X2QzX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDMsIEFkdWx0cyIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpJRmNvcl9lZmFfM19kM183OV9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV8zX2QzXzc5X29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kM183OV9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAzLCBPbGRlciBjaGlsZHJlbiAoNy05eSkiLCAKICAgICAgIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKSUZjb3JfZWZhXzNfZDNfNDZfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfM19kM180Nl9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDNfNDZfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMywgWW91bmdlciBjaGlsZHJlbiAoNC02eSkiLCAKICAgICAgIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKSUZjb3JfZWZhXzJfZDNfNDZfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfMl9kM180Nl9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzJfZDNfNDZfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMywgWW91bmdlciBjaGlsZHJlbiAoNC02eSkiLCAKICAgICAgIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMi1mYWN0b3Igc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgpgYGB7cn0KZmlndXJlQS4xMCA8LSBwbG90X2dyaWQoSUZjb3JfZWZhXzNfZDNfYWRfb2JsaW1pbiwgSUZjb3JfZWZhXzRfZDNfYWRfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgSUZjb3JfZWZhXzNfZDNfNzlfb2JsaW1pbiwgSUZjb3JfZWZhXzNfZDNfNDZfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgSUZjb3JfZWZhXzJfZDNfNDZfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gNSwgcmVsX3dpZHRocyA9IGMoMSwgMSwgMSwgMSwgMSkpCgpmaWd1cmVBLjEwX2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuMTAsIHN0cl93cmFwKCJGaWd1cmUgQS4xMDogSW50ZXItZmFjdG9yIGNvcnJlbGF0aW9ucyBmcm9tIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAzIGFmdGVyIG9ibGltaW4gdHJhbnNmb3JtYXRpb24uIFNlZSBDaGFwdGVyIElJIGZvciBtZXRob2RzLiAoQSkgVVMgYWR1bHRzLCAzLWZhY3RvciBzb2x1dGlvbi4gKEIpIFVTIGFkdWx0cywgNC1mYWN0b3Igc29sdXRpb24uIChDKSBVUyBjaGlsZHJlbiBhZ2VzIDctOXkuIChEKSBVUyBjaGlsZHJlbiBhZ2VzIDQtNnksIDMtZmFjdG9yIHNvbHV0aW9uLiAoRSkgVVMgY2hpbGRyZW4gYWdlcyA0LTZ5LCAyLWZhY3RvciBzb2x1dGlvbi4gRmFjdG9ycyBoYXZlIGJlZW4gbGFiZWxlZCB3aXRoIHRoZSBsYWJlbHMgJ0JPRFksJyAnSEVBUlQsJyBhbmQgJ01JTkQsJyB3aGVuIGFwcGxpY2FibGUsIHRvIGZhY2lsaXRhdGUgY29tcGFyaXNvbiBhY3Jvc3Mgc3R1ZGllcy4iLCAyMzApLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuMTAsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSAxMCwgZmlnLmFzcCA9IDAuMjV9CmdnZHJhdyhmaWd1cmVBLjEwX2NhcCkKYGBgCgoKIyMgU3R1ZHkgNAoKIyMjIEVGQSBzb2x1dGlvbnMKCkFsbCBmYWN0b3IgcmV0ZW50aW9uIHByb3RvY29scyBzdWdnZXN0ZWQgcmV0YWluaW5nIDMgZmFjdG9ycyBmb3IgYWR1bHRzIGluIFN0dWR5IDQ7IGRpZmZlcmVudCBwcm90b2NvbHMgc3VnZ2VzdGVkIHJldGFpbmluZyBlaXRoZXIgZWl0aGVyIDEsIDMsIG9yIDQgZmFjdG9ycyBmb3IgY2hpbGRyZW4gKGFnZXMgNC01eSkuIEhlcmUsIEkgcmVwb3J0IHRoZSAzLWZhY3RvciBzb2x1dGlvbiBmb3IgYWR1bHRzLCBhbmQgdGhlIDEtLCAzLSwgYW5kIDQtZmFjdG9yIHNvbHV0aW9ucyBmb3IgY2hpbGRyZW4uIFdoZW4gdGhlc2UgZmFjdG9ycyBzZWVtIHNpbWlsYXIgdG8gdGhlIEJPRFksIEhFQVJULCBhbmQgTUlORCBmYWN0b3JzIHByZXNlbnRlZCBpbiBDaGFwdGVyIElJSSwgSSBoYXZlIGxhYmVsZWQgdGhlbSBhY2NvcmRpbmdseS4KCmBgYHtyfQplZmFfM19kNF9hZF9vYmxpbWluIDwtIGZhX2Z1bihkNF9hZF93aWRlX2ksIDMpCmVmYV8zX2Q0XzQ2X29ibGltaW4gPC0gZmFfZnVuKGQ0XzQ2X3dpZGVfaSwgMykKZWZhXzRfZDRfNDZfb2JsaW1pbiA8LSBmYV9mdW4oZDRfNDZfd2lkZV9pLCA0KQplZmFfMV9kNF80Nl9vYmxpbWluIDwtIGZhX2Z1bihkNF80Nl93aWRlX2ksIDEpCmBgYAoKYGBge3J9CmZhY3Rvcl9uYW1lc19lZmFfM19kNF9hZF9vYmxpbWluIDwtIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIpCmZhY3Rvcl9uYW1lc19lZmFfM19kNF80Nl9vYmxpbWluIDwtIGMoIkJPRFkiLCAiTUlORC1IRUFSVCIsICJIRUFSVCAobmVnYXRpdmUpIikKZmFjdG9yX25hbWVzX2VmYV80X2Q0XzQ2X29ibGltaW4gPC0gYygiTUlORC1IRUFSVCIsICJCT0RZIiwgIkJPRFkgKG5hdXNlYSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCAobmVnYXRpdmUpIikKZmFjdG9yX25hbWVzX2VmYV8xX2Q0XzQ2X29ibGltaW4gPC0gYygiTkEiKQpgYGAKCmBgYHtyfQpwbG90X2VmYV8zX2Q0X2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzNfZDRfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2Q0X2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDQsIEFkdWx0cyIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV8zX2Q0XzQ2X29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzNfZDRfNDZfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2Q0XzQ2X29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDQsIENoaWxkcmVuICg0LTZ5KSIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV80X2Q0XzQ2X29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzRfZDRfNDZfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV80X2Q0XzQ2X29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDQsIENoaWxkcmVuICg0LTV5KSIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV8xX2Q0XzQ2X29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzFfZDRfNDZfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8xX2Q0XzQ2X29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDQsIENoaWxkcmVuICg0LTV5KSIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAxLWZhY3RvciAobnVsbCkgc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgpgYGB7cn0KZmlndXJlQS4xMSA8LSBwbG90X2dyaWQocGxvdF9lZmFfM19kNF9hZF9vYmxpbWluLCBwbG90X2VmYV8zX2Q0XzQ2X29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgcGxvdF9lZmFfNF9kNF80Nl9vYmxpbWluLCBwbG90X2VmYV8xX2Q0XzQ2X29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gNCwgcmVsX3dpZHRocyA9IGMoMSwgMSwgMSwgMSkpCgpmaWd1cmVBLjExX2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuMTEsIHN0cl93cmFwKCJGaWd1cmUgQS4xMTogRmFjdG9yIGxvYWRpbmdzIGZyb20gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2VzIG9mIFN0dWR5IDQgYWZ0ZXIgb2JsaW1pbiB0cmFuc2Zvcm1hdGlvbi4gU2VlIENoYXB0ZXIgSUkgZm9yIG1ldGhvZHMuIChBKSBVUyBhZHVsdHMuIChCKSBVUyBjaGlsZHJlbiBhZ2VzIDQtNXksIDMtZmFjdG9yIHNvbHV0aW9uLiAoQykgVVMgY2hpbGRyZW4gYWdlcyA0LTV5LCA0LWZhY3RvciBzb2x1dGlvbi4gKEQpIFVTIGNoaWxkcmVuIGFnZXMgNC01eSwgMS1mYWN0b3IgKG51bGwpIHNvbHV0aW9uLiBJbiB0aGlzIGFuZCBhbGwgZmlndXJlcyBwb3J0cmF5aW5nIGZhY3RvciBsb2FkaW5ncywgZmFjdG9ycyBoYXZlIGJlZW4gcGxvdHRlZCBpbiB0aGUgc2FtZSBvcmRlciAoQk9EWSwgSEVBUlQsIE1JTkQpLCB3aGVuIGFwcGxpY2FibGUsIHRvIGZhY2lsaXRhdGUgY29tcGFyaXNvbiBhY3Jvc3Mgc3R1ZGllcy4gQSBmYWN0b3IgbG9hZGluZyBvZiArMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgcG9zaXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWVudGFsIGNhcGFjaXR5IGFuZCB1bmRlcmx5aW5nIGNvbnN0cnVjdDsgYSBsb2FkaW5nIG9mIC0xIGluZGljYXRlcyBhIHBlcmZlY3RseSBuZWdhdGl2ZSByZWxhdGlvbnNoaXAuIiwgMjEwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjExLCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gOSwgZmlnLmFzcCA9IDAuNn0KZ2dkcmF3KGZpZ3VyZUEuMTFfY2FwKQpgYGAKCiMjIyBJbnRlci1mYWN0b3IgY29ycmVsYXRpb25zCgpIZXJlIEkgcHJlc2VudCBpbnRlci1mYWN0b3IgY29ycmVsYXRpb25zIGZvciBhbGwgb2YgdGhlIGFib3ZlIEVGQSBzb2x1dGlvbnMgZm9yIFN0dWR5IDQgKHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgMS1mYWN0b3IgbnVsbCBzb2x1dGlvbiBmb3IgY2hpbGRyZW4pLiAKCmBgYHtyfQpJRmNvcl9lZmFfM19kNF9hZF9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV8zX2Q0X2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kNF9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSA0LCBBZHVsdHMiLCAKICAgICAgIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKSUZjb3JfZWZhXzNfZDRfNDZfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfM19kNF80Nl9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDRfNDZfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgNCwgQ2hpbGRyZW4gKDQtNXkpIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCklGY29yX2VmYV80X2Q0XzQ2X29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzRfZDRfNDZfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV80X2Q0XzQ2X29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDQsIENoaWxkcmVuICg0LTV5KSIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA0LWZhY3RvciBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjEyIDwtIHBsb3RfZ3JpZChJRmNvcl9lZmFfM19kNF9hZF9vYmxpbWluLCBJRmNvcl9lZmFfM19kNF80Nl9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgICBJRmNvcl9lZmFfNF9kNF80Nl9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSAzLCByZWxfd2lkdGhzID0gYygxLCAxLCAxLjIpKQoKZmlndXJlQS4xMl9jYXAgPC0gYWRkX3N1YihmaWd1cmVBLjEyLCBzdHJfd3JhcCgiRmlndXJlIEEuMTI6IEludGVyLWZhY3RvciBjb3JyZWxhdGlvbnMgZnJvbSBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgb2YgU3R1ZHkgNCBhZnRlciBvYmxpbWluIHRyYW5zZm9ybWF0aW9uLiBTZWUgQ2hhcHRlciBJSSBmb3IgbWV0aG9kcy4gKEEpIFVTIGFkdWx0cy4gKEIpIFVTIGNoaWxkcmVuIGFnZXMgNC01eSwgMy1mYWN0b3Igc29sdXRpb24uIChDKSBVUyBjaGlsZHJlbiBhZ2VzIDQtNXksIDMtZmFjdG9yIHNvbHV0aW9uLiBGYWN0b3JzIGhhdmUgYmVlbiBsYWJlbGVkIHdpdGggdGhlIGxhYmVscyAnQk9EWSwnICdIRUFSVCwnIGFuZCAnTUlORCwnIHdoZW4gYXBwbGljYWJsZSwgdG8gZmFjaWxpdGF0ZSBjb21wYXJpc29uIGFjcm9zcyBzdHVkaWVzLiIsIDE0MCksIHggPSAwLCBoanVzdCA9IDApCmBgYAoKYGBge3IgZmlndXJlQS4xMiwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDYsIGZpZy5hc3AgPSAwLjR9CmdnZHJhdyhmaWd1cmVBLjEyX2NhcCkKYGBgCgoKIyBWYXJpbWF4LXJvdGF0ZWQgc29sdXRpb25zIHByZXZpb3VzbHkgZGVlbWVkIHJlZHVuZGFudAoKSW4gQ2hhcHRlciBJSUksIEkgZm9jdXNlZCBteSBpbnRlcnByZXRhdGlvbiBvbiBhIHN1YnNldCBvZiB0aGUgRUZBIHNvbHV0aW9ucyBzdWdnZXN0ZWQgYnkgdGhlIHRocmVlIGZhY3RvciByZXRlbnRpb24gcHJvdG9jb2xzLCBleGNsdWRpbmcgdGhvc2Ugc29sdXRpb25zIGluIHdoaWNoIGFkZGl0aW9uYWwgZmFjdG9ycyB3ZXJlIHJlZHVuZGFudCB3aXRoIHRoZSAzLWZhY3RvciAoQk9EWS1IRUFSVC1NSU5EKSBzb2x1dGlvbi4gVGhlc2UgYWRkaXRpb25hbCBmYWN0b3JzIHRlbmQgdG8gZXhwbGFpbiB2ZXJ5IGxpdHRsZSBvZiB0aGUgc2hhcmVkIHZhcmlhbmNlOyB0ZW5kIG5vdCB0byBiZSB0aGUgZG9taW5hbnQgZmFjdG9yICh0aGUgZmFjdG9yIHdpdGggdGhlIHN0cm9uZ2VzdCBhYnNvbHV0ZSBmYWN0b3IgbG9hZGluZykgZm9yIG1hbnksIGlmIGFueSwgbWVudGFsIGNhcGFjaXRpZXM7IGFuZCB0ZW5kIHRvIGhhdmUgdmVyeSB3ZWFrIGZhY3RvciBsb2FkaW5ncy4gSSBpbmNsdWRlIHRoZW0gaGVyZSBmb3IgY29tcGxldGVuZXNzLgoKIyMgU3R1ZHkgMQoKVGhlIGZhY3RvciByZXRlbnRpb24gY3JpdGVyaWEgZW1wbG95ZWQgaW4gV2Vpc21hbiBldCBhbC4gKDIwMTcpIHN1Z2dlc3RlZCByZXRhaW5pbmcgMyBmYWN0b3JzIGZvciBhbGwgb2YgdGhlIHN0dWRpZXMgaW5jbHVkZWQgaW4gU3R1ZHkgMTsgc2VlIENoYXB0ZXIgSUlJLiBJbiBjb250cmFzdCwgcGFyYWxsZWwgYW5hbHlzaXMgc3VnZ2VzdGVkIHJldGFpbmluZyA0IGZhY3RvcnMgKGluc3RlYWQgb2YgMykgZm9yIFN0dWRpZXMgMWIgYW5kIDFkOyBtaW5pbWl6aW5nIEJJQyBzdWdnZXN0ZWQgcmV0YWluaW5nIDQgZmFjdG9ycyAoaW5zdGVhZCBvZiAzKSBmb3IgU3R1ZHkgMWMsIGFuZCA1IGZhY3RvcnMgKGluc3RlYWQgb2YgMykgZm9yIFN0dWRpZXMgMWEsIDFiLCBhbmQgMWQuIFNlZSBGaWd1cmUgQS4xMy4KCmBgYHtyfQojIHN0dWR5IDFhCnBsb3RfZWZhX2JpY19kMWFfYWQgPC0gaGVhdG1hcF9mdW4oZWZhX2JpY19kMWFfYWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhY3RvciA0IiwgIkZhY3RvciA1IikpICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFhIiwgc3VidGl0bGUgPSAiNS1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyBzdHVkeSAxYgpwbG90X2VmYV9wYXJfZDFiX2FkIDwtIGhlYXRtYXBfZnVuKGVmYV9wYXJfZDFiX2FkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJCT0RZIiwgIkhFQVJUIiwgIk1JTkQiLCAiRmFjdG9yIDQiKSkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWIiLCBzdWJ0aXRsZSA9ICI0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV9iaWNfZDFiX2FkIDwtIGhlYXRtYXBfZnVuKGVmYV9iaWNfZDFiX2FkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJCT0RZIiwgIkhFQVJUIiwgIk1JTkQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWN0b3IgNCIsICJGYWN0b3IgNSIpKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYiIsIHN1YnRpdGxlID0gIjUtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHN0dWR5IDFjCnBsb3RfZWZhX2JpY19kMWNfYWQgPC0gaGVhdG1hcF9mdW4oZWZhX2JpY19kMWNfYWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIsICJGYWN0b3IgNCIpKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYyIsIHN1YnRpdGxlID0gIjQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgc3R1ZHkgMWQKcGxvdF9lZmFfcGFyX2QxZF9hZCA8LSBoZWF0bWFwX2Z1bihlZmFfcGFyX2QxZF9hZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIiwgIkZhY3RvciA0IikpICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFkIiwgc3VidGl0bGUgPSAiNC1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfYmljX2QxZF9hZCA8LSBoZWF0bWFwX2Z1bihlZmFfYmljX2QxZF9hZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFjdG9yIDQiLCAiRmFjdG9yIDUiKSkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWQiLCBzdWJ0aXRsZSA9ICI1LWZhY3RvciBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjEzIDwtIHBsb3RfZ3JpZChwbG90X2VmYV9iaWNfZDFhX2FkLCAKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV9wYXJfZDFiX2FkLCBwbG90X2VmYV9iaWNfZDFiX2FkLCAKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV9iaWNfZDFjX2FkLAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhX3Bhcl9kMWRfYWQsIHBsb3RfZWZhX2JpY19kMWRfYWQsCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMywgcmVsX3dpZHRocyA9IGMoMSwgMSwgMS4yKSkKCmZpZ3VyZUEuMTNfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS4xMywgc3RyX3dyYXAoIkZpZ3VyZSBBLjEzOiBGYWN0b3IgbG9hZGluZ3MgZnJvbSBhZGRpdGlvbmFsIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAxLCBub3QgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUkuIEFsbCByZXN1bHRzIGFyZSBmcm9tIFVTIGFkdWx0IHNhbXBsZXM7IHNlZSBDaGFwdGVyIElJIGZvciBtZXRob2RzLiAoQSkgU3R1ZHkgMWEsIHNvbHV0aW9uIHN1Z2dlc3RlZCBieSBtaW5pbWl6aW5nIEJJQy4gKEIpIFN0dWR5IDFiLCBzb2x1dGlvbiBzdWdnZXN0ZWQgYnkgcGFyYWxsZWwgYW5hbHlzaXMuIChDKSBTdHVkeSAxYiwgc29sdXRpb24gc3VnZ2VzdGVkIGJ5IG1pbmltaXppbmcgQklDLiAoRCkgU3R1ZHkgMWMsIHNvbHV0aW9uIHN1Z2dlc3RlZCBieSBtaW5pbWl6aW5nIEJJQy4gKEUpIFN0dWR5IDFkLCBzb2x1dGlvbiBzdWdnZXN0ZWQgYnkgcGFyYWxsZWwgYW5hbHlzaXMuIChGKSBTdHVkeSAxZCwgc29sdXRpb24gc3VnZ2VzdGVkIGJ5IG1pbmltaXppbmcgQklDLiBJbiB0aGlzIGFuZCBhbGwgZmlndXJlcyBwb3J0cmF5aW5nIGZhY3RvciBsb2FkaW5ncywgZmFjdG9ycyBoYXZlIGJlZW4gcGxvdHRlZCBpbiB0aGUgc2FtZSBvcmRlciAoQk9EWSwgSEVBUlQsIE1JTkQpLCB3aGVuIGFwcGxpY2FibGUsIHRvIGZhY2lsaXRhdGUgY29tcGFyaXNvbiBhY3Jvc3Mgc3R1ZGllcy4gQSBmYWN0b3IgbG9hZGluZyBvZiArMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgcG9zaXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWVudGFsIGNhcGFjaXR5IGFuZCB1bmRlcmx5aW5nIGNvbnN0cnVjdDsgYSBsb2FkaW5nIG9mIC0xIGluZGljYXRlcyBhIHBlcmZlY3RseSBuZWdhdGl2ZSByZWxhdGlvbnNoaXAuIiwgMjAwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjEzLCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gOSwgZmlnLmFzcCA9IDF9CmdnZHJhdyhmaWd1cmVBLjEzX2NhcCkKYGBgCgojIyBTdHVkeSAyCgpBbGwgb2YgdGhlIEVGQSBzb2x1dGlvbnMgc3VnZ2VzdGVkIGJ5IHRoZSB0aHJlZSBmYWN0b3IgcmV0ZW50aW9uIHByb3RvY29scyBhcmUgcmVwb3J0ZWQgaW4gZnVsbCBpbiBDaGFwdGVyIElJSS4KCiMjIFN0dWR5IDMKClRoZSBmYWN0b3IgcmV0ZW50aW9uIGNyaXRlcmlhIGVtcGxveWVkIGluIFdlaXNtYW4gZXQgYWwuICgyMDE3KSBzdWdnZXN0ZWQgcmV0YWluaW5nIDMgZmFjdG9ycyBmb3IgYWxsIG9mIHRoZSBhZ2UgZ3JvdXBzIGluY2x1ZGVkIGluIFN0dWR5IDM7IHNlZSBDaGFwdGVyIElJSS4gSW4gY29udHJhc3QsIHBhcmFsbGVsIGFuYWx5c2lzIHN1Z2dlc3RlZCByZXRhaW5pbmcgMiBmYWN0b3JzIChpbnN0ZWFkIG9mIDMpIGZvciB5b3VuZ2VyIGNoaWxkcmVuOyBhbmQgbWluaW1pemluZyBCSUMgc3VnZ2VzdGVkIHJldGFpbmluZyA0IGZhY3RvcnMgKGluc3RlYWQgb2YgMykgZm9yIGFkdWx0cywgYW5kIDEgZmFjdG9yIChpLmUuLCBhICJudWxsIiBzb2x1dGlvbikgZm9yIHlvdW5nZXIgY2hpbGRyZW4gKGFnZXMgNC02eSkuIFNlZSBGaWd1cmUgQS4xNC4KCmBgYHtyfQojIHN0dWR5IDMKcGxvdF9lZmFfYmljX2QzX2FkIDwtIGhlYXRtYXBfZnVuKGVmYV9iaWNfZDNfYWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIsICJGYWN0b3IgNCIpKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAzOiBBZHVsdHMiLCBzdWJ0aXRsZSA9ICI1LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV9iaWNfZDNfNDYgPC0gaGVhdG1hcF9mdW4oZWZhX2JpY19kM180NiwgKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAzOiBZb3VuZ2VyIGNoaWxkcmVuLCA0LTZ5IiwgCiAgICAgICBzdWJ0aXRsZSA9ICIxLWZhY3RvciAobnVsbCkgc29sdXRpb24iKSAjKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjE0IDwtIHBsb3RfZ3JpZChwbG90X2VmYV9iaWNfZDNfYWQsIHBsb3RfZWZhX2JpY19kM180NiwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSAyLCByZWxfd2lkdGhzID0gYygxLCAxKSkKCmZpZ3VyZUEuMTRfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS4xNCwgc3RyX3dyYXAoIkZpZ3VyZSBBLjE0OiBGYWN0b3IgbG9hZGluZ3MgZnJvbSBhZGRpdGlvbmFsIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAzLCBub3QgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUkuIFNlZSBDaGFwdGVyIElJIGZvciBtZXRob2RzLiAoQSkgQWR1bHRzLCBzb2x1dGlvbiBzdWdnZXN0ZWQgYnkgbWluaW1pemluZyBCSUMuIChCKSBZb3VuZ2VyIGNoaWxkcmVuICg0LTZ5KSwgJ251bGwnIHNvbHV0aW9uIHN1Z2dlc3RlZCBieSBtaW5pbWl6aW5nIEJJQy4gSW4gdGhpcyBhbmQgYWxsIGZpZ3VyZXMgcG9ydHJheWluZyBmYWN0b3IgbG9hZGluZ3MsIGZhY3RvcnMgaGF2ZSBiZWVuIHBsb3R0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgKEJPRFksIEhFQVJULCBNSU5EKSwgd2hlbiBhcHBsaWNhYmxlLCB0byBmYWNpbGl0YXRlIGNvbXBhcmlzb24gYWNyb3NzIHN0dWRpZXMuIEEgZmFjdG9yIGxvYWRpbmcgb2YgKzEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IHBvc2l0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG1lbnRhbCBjYXBhY2l0eSBhbmQgdW5kZXJseWluZyBjb25zdHJ1Y3Q7IGEgbG9hZGluZyBvZiAtMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgbmVnYXRpdmUgcmVsYXRpb25zaGlwLiIsIDExNSksIHggPSAwLCBoanVzdCA9IDApCmBgYAoKYGBge3IgZmlndXJlQS4xNCwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDUsIGZpZy5hc3AgPSAxfQpnZ2RyYXcoZmlndXJlQS4xNF9jYXApCmBgYAoKIyMgU3R1ZHkgNAoKQWxsIG9mIHRoZSBFRkEgc29sdXRpb25zIHN1Z2dlc3RlZCBieSB0aGUgdGhyZWUgZmFjdG9yIHJldGVudGlvbiBwcm90b2NvbHMgYXJlIHJlcG9ydGVkIGluIGZ1bGwgaW4gQ2hhcHRlciBJSUksIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgMS1mYWN0b3IgKCJudWxsIikgc29sdXRpb24gc3VnZ2VzdGVkIGJ5IG1pbmltaXppbmcgQklDIGZvciB5b3VuZ2VyIGNoaWxkcmVuICg0LTV5KS4gU2VlIEZpZ3VyZSBBLjE1LgoKYGBge3J9CiMgc3R1ZHkgNApwbG90X2VmYV9iaWNfZDRfNDYgPC0gaGVhdG1hcF9mdW4oZWZhX2JpY19kNF80NiwgKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSA0OiBZb3VuZ2VyIGNoaWxkcmVuLCA0LTV5IiwgCiAgICAgICBzdWJ0aXRsZSA9ICIxLWZhY3RvciAobnVsbCkgc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgpgYGB7cn0KZmlndXJlQS4xNSA8LSBwbG90X2VmYV9iaWNfZDRfNDYKCmZpZ3VyZUEuMTVfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS4xNSwgc3RyX3dyYXAoIkZpZ3VyZSBBLjE1OiBGYWN0b3IgbG9hZGluZ3MgZnJvbSB0aGUgJ251bGwnIHNvbHV0aW9uIHN1Z2dlc3RlZCBieSBtaW5pbWl6aW5nIEJJQyBmb3IgeW91bmdlciBjaGlsZHJlbiAoNC01eSkgaW4gU3R1ZHkgNC4gU2VlIENoYXB0ZXIgSUkgZm9yIG1ldGhvZHMsIGFuZCBDaGFwdGVyIElJSSBmb3Igb3RoZXIgRUZBIHNvbHV0aW9ucyBmb3IgdGhpcyBzdHVkeS4gQSBmYWN0b3IgbG9hZGluZyBvZiArMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgcG9zaXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWVudGFsIGNhcGFjaXR5IGFuZCB1bmRlcmx5aW5nIGNvbnN0cnVjdDsgYSBsb2FkaW5nIG9mIC0xIGluZGljYXRlcyBhIHBlcmZlY3RseSBuZWdhdGl2ZSByZWxhdGlvbnNoaXAuIiwgMzApLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuMTUsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSAyLCBmaWcuYXNwID0gMS44fQpnZ2RyYXcoZmlndXJlQS4xNV9jYXApCmBgYAoKCg==